package cn.iocoder.yudao.module.crossborder.risk.api.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 欺诈检测信息 DTO
 *
 * @author LHL
 */
@Schema(description = "RPC 服务 - 欺诈检测信息 DTO")
@Data
public class FraudDetectionDTO {

    @Schema(description = "检测编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
    private Long id;

    @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048")
    private Long userId;

    @Schema(description = "订单编号", example = "3072")
    private Long orderId;

    @Schema(description = "欺诈类型", example = "1")
    private Integer fraudType;

    @Schema(description = "欺诈类型名称", example = "信用卡欺诈")
    private String fraudTypeName;

    @Schema(description = "欺诈评分", example = "85.5")
    private BigDecimal fraudScore;

    @Schema(description = "是否欺诈", example = "true")
    private Boolean isFraud;

    @Schema(description = "检测状态", example = "1")
    private Integer status;

    @Schema(description = "检测结果", example = "疑似欺诈")
    private String result;

    @Schema(description = "欺诈特征", example = "异常IP,高频交易")
    private String fraudFeatures;

    @Schema(description = "检测规则", example = "规则A,规则B")
    private String detectionRules;

    @Schema(description = "风险指标", example = "IP风险,设备风险")
    private String riskIndicators;

    @Schema(description = "建议动作", example = "冻结账户")
    private String recommendedAction;

    @Schema(description = "检测详情", example = "详细的欺诈检测报告")
    private String detectionDetail;

    @Schema(description = "检测时间")
    private LocalDateTime detectionTime;

    @Schema(description = "处理状态", example = "1")
    private Integer processStatus;

    @Schema(description = "处理时间")
    private LocalDateTime processTime;

    @Schema(description = "处理人员", example = "admin")
    private String processor;

    @Schema(description = "处理结果", example = "已处理")
    private String processResult;

    @Schema(description = "备注", example = "需要进一步调查")
    private String remark;

    @Schema(description = "创建时间")
    private LocalDateTime createTime;

    @Schema(description = "更新时间")
    private LocalDateTime updateTime;

}
